package com.pur.zsms.storemanage.dao;

import java.util.List;

import com.pur.zsms.common.exception.GenericException;
import com.pur.zsms.common.support.PageController;
import com.pur.zsms.common.support.PaginationSupport;
import com.pur.zsms.ordercustommanage.po.OrderCustPo;
import com.pur.zsms.pmsnmanage.menu.po.MenuPo;
import com.pur.zsms.pmsnmanage.user.po.UserPo;
import com.pur.zsms.pmsnmanage.user.po.UserRolePo;
import com.pur.zsms.pmsnmanage.user.vo.UserVo;
import com.pur.zsms.storemanage.po.StoreInDetailedPo;
import com.pur.zsms.storemanage.po.StoreInPo;
import com.pur.zsms.storemanage.po.StoreMaterDetailPo;
import com.pur.zsms.storemanage.po.StoreMaterPo;
import com.pur.zsms.storemanage.po.StoreOutDetailedPo;
import com.pur.zsms.storemanage.po.StoreOutDetailedValuePo;
import com.pur.zsms.storemanage.po.StoreOutPo;
import com.pur.zsms.storemanage.po.StorePo;
import com.pur.zsms.storemanage.vo.SStoreMaterVo;
import com.pur.zsms.storemanage.vo.StoreInDetailedVo;
import com.pur.zsms.storemanage.vo.StoreInVo;
import com.pur.zsms.storemanage.vo.StoreMaterVo;
import com.pur.zsms.storemanage.vo.StoreOutDetailedVo;
import com.pur.zsms.storemanage.vo.StoreOutVo;
import com.pur.zsms.storemanage.vo.StoreVo;

public interface IStoreDao {

	/**
	 * 查询出所有仓库信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStore(PageController pageController, StoreVo storeVo) throws GenericException;

	/**
	 * 查询出所有入库单信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStoreIn(PageController pageController, StoreInVo storeInVo) throws GenericException;

	public PaginationSupport listStoreInForSupplier(PageController pageController, StoreInVo storeInVo) throws GenericException;

	public PaginationSupport listStoreOutForSupplier(PageController pageController, StoreOutVo storeOutVo) throws GenericException;

	/**
	 * 查询出所有出库单信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStoreOut(PageController pageController, StoreOutVo storeOutVo) throws GenericException;

	public List<Object[]> computerStoreValue() throws GenericException;

	/**
	 * 查询出所有入库单详细信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStoreInDetailed(PageController pageController, StoreInDetailedVo storeInDetailedVo) throws GenericException;

	/**
	 * 查询出所有入库单详细信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStoreOutDetailed(PageController pageController, StoreOutDetailedVo storeOutDetailedVo) throws GenericException;

	/**
	 * 查询出所有仓库材料信息
	 * 
	 * @param 查询条件封装在UserVo中
	 * @return
	 */
	public PaginationSupport listStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findSupplierStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findSupplierStoreMaterForMinStore(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public PaginationSupport findMaterByOrderDateAndSupplierMaterType(PageController pageController, StoreMaterVo storeMaterVo)
			throws GenericException;

	public PaginationSupport findMaterByOrderDateAndSupplierMaterType3(PageController pageController, StoreMaterVo storeMaterVo)
			throws GenericException;

	public PaginationSupport listSelectStoreMater(PageController pageController, StoreMaterVo storeMaterVo) throws GenericException;

	public void addStorePo(StorePo c) throws GenericException;

	public void deleteStorePo(StoreVo po) throws GenericException;

	public void deleteStorePoIn(StoreInVo po) throws GenericException;

	public void deleteStorePoOut(StoreOutVo po) throws GenericException;

	public void deleteStoreIndetail(StoreInVo po) throws GenericException;

	public void deleteStoreOutdetail(StoreOutVo po) throws GenericException;

	public void deleteStoreMaterDetailPo(int sidDetail, int materId) throws GenericException;

	public void addStoreInPo(StoreInPo c) throws GenericException;

	public void updateStoreInPo(StoreInPo po) throws GenericException;

	public void addStoreOutDetailedValuePo(StoreOutDetailedValuePo c) throws GenericException;

	public int minStoreOutPo(StoreOutPo c) throws GenericException;

	public void addStoreOutPo(StoreOutPo c) throws GenericException;

	public void updateStoreOutPo(StoreOutPo c) throws GenericException;

	public int getStoreHouseIdByCustId(String custId) throws GenericException;

	public int getStoreHouseIdBySupId(long supId) throws GenericException;

	public void addStoreInDetailedPo(StoreInDetailedPo c) throws GenericException;

	public void addStoreOutDetailedPo(StoreOutDetailedPo c) throws GenericException;

	public void minStoreOutDetailedPo(StoreOutDetailedPo c) throws GenericException;

	public void addStoreMaterPo(StoreMaterPo c) throws GenericException;

	public void addStoreMaterPoPersist(StoreMaterPo c) throws GenericException;

	public void addStoreMaterDetailPo(StoreMaterDetailPo c) throws GenericException;

	public void updateStoreMaterDetailPo(StoreMaterDetailPo c) throws GenericException;

	public void updateStoreMaterPo(StoreMaterPo c) throws GenericException;

	public List<StoreMaterPo> getStoreMaterList(String userId) throws GenericException;

	public List<StoreMaterPo> getStoreMaterListbyUserIdMaterId(int userId, int materId) throws GenericException;

	public List<StoreMaterPo> getStoreMaterListbyHoustIdMaterId(int houseId, int materId) throws GenericException;

	public StorePo getStorePo(String userId) throws GenericException;

	public List<StorePo> getStorePoByStoreName(String storeName) throws GenericException;

	public List<StorePo> getStorePoByUserId(int userId) throws GenericException;

	public StoreInPo getStoreInPo(String storeInId) throws GenericException;

	public StoreOutPo getStoreOutPoByStoreOutId(String storeOutId) throws GenericException;

	public List<StoreOutPo> getStoreOutPoBySupIdAndOrdId(int supId, int ordId) throws GenericException;

	public List<StoreOutPo> getStoreOutPoForCheckConfirm(int storeHouseId) throws GenericException;

	public List<StoreInDetailedPo> getStoreInDetailedPoList(String storeInId) throws GenericException;

	public StoreInDetailedPo getStoreInDetailedPo(int id) throws GenericException;

	public StoreInPo getStoreInPo(int storeInId) throws GenericException;

	public List getStoreInDetailedPoListDealValue() throws GenericException;

	public List getStoreMaterDetailPoNumber(int storeHouseId, int materId) throws GenericException;

	public List<Object[]> getRealValue(int id) throws GenericException;

	public StoreInDetailedPo getStoreInDetailedPoById(int id) throws GenericException;

	public List<StoreOutDetailedPo> getStoreOutDetailedPoList(String storeOutId) throws GenericException;

	public List<StoreMaterDetailPo> getStoreMaterDetailPo(String ordCustId) throws GenericException;

	public List<StoreMaterDetailPo> getStoreMaterDetailPoByHostIdAndMaterIdAndMaterDay(int hostId, int materId) throws GenericException;
}
